/*
Copyright (C) 2016 Marien Raat

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include <SFML/Graphics.hpp>
#include <Box2D/Box2D.h>

#include "config.h"

// This class handles the Box2D boundaries and the drawing of the
// field
class Field {
public:
    Field() { }
    Field(b2World *world, sf::Vector2f size);
    void initialize(b2World *world, sf::Vector2f size);
    void setTextures(sf::Texture *fieldTexture,
                     sf::Texture *grassTexture);
    void draw(sf::RenderTarget *target);
private:
    sf::Texture *fieldTexture, *grassTexture;
    sf::Sprite fieldSprite;
    sf::VertexArray grassVertices;

    b2World *world;
    b2Body *topBody, *bottomBody;

    void generateVertices(sf::Vector2f size);
    void generateWalls(b2Vec2 size);
};
